package com.handsome.模板模式.Spring;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.AbstractRefreshableApplicationContext;

import java.io.IOException;

/**
 * Spring IOC源码
 * @author niechun
 * @date 2023/3/11 20:12
 */
public class Source {
    public static void main(String[] args) {
        //Spring框架使用了模板模式
        //ConfigurableApplicationContext类的子类AbstractApplicationContext中的refresh方法
        //refresh方法中的 this.obtainFreshBeanFactory()方法中的refreshBeanFactory()方法就是一个抽象方法
        //refresh方法中的onRefresh方法就是一个钩子方法
        ConfigurableApplicationContext configurableApplicationContext=new AbstractRefreshableApplicationContext() {
            @Override
            protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws BeansException, IOException {
            }
        };

    }
}
